/*
 * Saphre - Suffix Arrays for Phrase Extraction
 * Copyright (C) 2013 
 * Dale Gerdemann - Tübingen, Germany 
 * Niko Schenk - Frankfurt am Main, Germany
 * All rights reserved.
 *
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 *
 */
package saphre.commands;

/**
 *
 * @author Niko Schenk
 */
public class CmdGappyParameters {

    // **** PARAMETERS *** //
    // Everything combined.
    private int minGap;
    private int maxGap;
    private double minMiLeftRightPart;
    private double minCombinedAverageMiYamamotoChurch;
    private double minGlobalRidf;
    private int minTfOfGappyPhrase; // 
    private int minDfOfGappyPhrase; //
    // Left part.
    private int minLengthOfLeftPart; // preferrably measured in tokens.
    private int maxLengthOfLeftPart; // same here.
    private int minTfOfLeftPartInCorpus;
    private int maxTfOfLeftPartInCorpus;
    // TODO: For n-grams with n>1, specify min mi of left part here.
    // private int minMiOfRightPart...
    private double minRidfOfLeftPartInCorpus;
    private String inLeftPart; // substring which is contained within the left part.
    // Right part.
    private int minLengthOfRightPart; // preferrably measured in tokens.
    private int maxLengthOfRightPart; // same here.
    private int minTfOfRightPartInCorpus;
    private int maxTfOfRightPartInCorpus;
    // TODO: For n-grams with n>1, specify min mi of right part here.
    // private int minMiOfRightPart...
    private double minRidfOfRightPartInCorpus;
    private String inRightPart; // substring which is contained within the right part.
    // Fillers.
    private int minNumberOfFillers;
    private int minSumTfOfFillers;
    private double minAverageRidfOfFillers;
    private double minMaxfill;
    private int minRatio;
    private String inOneOfFillers;
    // Print options.
    private boolean writeToFile;
    private boolean printToConsole;

    /**
     * Get some gappy phrase default values for the parameters.
     */
    public CmdGappyParameters() {

        // Everything combined.
        this.minGap = 0;
        this.maxGap = 5;
        this.minMiLeftRightPart = -1000.0;
        this.minCombinedAverageMiYamamotoChurch = -1000.0;
        this.minGlobalRidf = -1000.0;
        this.minTfOfGappyPhrase = 0; // 
        this.minDfOfGappyPhrase = 0; //

        // Left part.
        this.minLengthOfLeftPart = 0; // preferrably measured in tokens.
        this.maxLengthOfLeftPart = 1000; // same here.
        this.minTfOfLeftPartInCorpus = 1;
        this.maxTfOfLeftPartInCorpus = Integer.MAX_VALUE;
        // TODO: For n-grams with n>1, specify min mi of left part here.
        // private int minMiOfRightPart...
        this.minRidfOfLeftPartInCorpus = -1000.0;
        this.inLeftPart = ""; // substring which is contained within the left part.
        
        // Right part.
        this.minLengthOfRightPart = 0; // preferrably measured in tokens.
        this.maxLengthOfRightPart = 1000; // same here.
        this.minTfOfRightPartInCorpus = 1;
        this.maxTfOfRightPartInCorpus = Integer.MAX_VALUE;
        // TODO: For n-grams with n>1, specify min mi of right part here.
        // private int minMiOfRightPart...
        this.minRidfOfRightPartInCorpus = -1000.0;
        this.inRightPart = ""; // substring which is contained within the right part.
        
        // Fillers.
        this.minNumberOfFillers = 0;
        this.minSumTfOfFillers = 0;
        this.minAverageRidfOfFillers = -1000.0;
        this.minMaxfill = -1.0;
        this.minRatio = -1;
        this.inOneOfFillers = "";

        // Print options.
        this.writeToFile = true;
        this.printToConsole = true;
    }

    public int getMinGap() {
        return minGap;
    }

    public void setMinGap(int minGap) {
        this.minGap = minGap;
    }

    public int getMaxGap() {
        return maxGap;
    }

    public void setMaxGap(int maxGap) {
        this.maxGap = maxGap;
    }

    public double getMinMiLeftRightPart() {
        return minMiLeftRightPart;
    }

    public void setMinMiLeftRightPart(double minMiLeftRightPart) {
        this.minMiLeftRightPart = minMiLeftRightPart;
    }

    public double getMinCombinedAverageMiYamamotoChurch() {
        return minCombinedAverageMiYamamotoChurch;
    }

    public void setMinCombinedAverageMiYamamotoChurch(double minCombinedAverageMiYamamotoChurch) {
        this.minCombinedAverageMiYamamotoChurch = minCombinedAverageMiYamamotoChurch;
    }

    public double getMinGlobalRidf() {
        return minGlobalRidf;
    }

    public void setMinGlobalRidf(double minGlobalRidf) {
        this.minGlobalRidf = minGlobalRidf;
    }

    public int getMinTfOfGappyPhrase() {
        return minTfOfGappyPhrase;
    }

    public void setMinTfOfGappyPhrase(int minTfOfGappyPhrase) {
        this.minTfOfGappyPhrase = minTfOfGappyPhrase;
    }

    public int getMinDfOfGappyPhrase() {
        return minDfOfGappyPhrase;
    }

    public void setMinDfOfGappyPhrase(int minDfOfGappyPhrase) {
        this.minDfOfGappyPhrase = minDfOfGappyPhrase;
    }

    public int getMinLengthOfLeftPart() {
        return minLengthOfLeftPart;
    }

    public void setMinLengthOfLeftPart(int minLengthOfLeftPart) {
        this.minLengthOfLeftPart = minLengthOfLeftPart;
    }

    public int getMaxLengthOfLeftPart() {
        return maxLengthOfLeftPart;
    }

    public void setMaxLengthOfLeftPart(int maxLengthOfLeftPart) {
        this.maxLengthOfLeftPart = maxLengthOfLeftPart;
    }

    public int getMinTfOfLeftPartInCorpus() {
        return minTfOfLeftPartInCorpus;
    }

    public void setMinTfOfLeftPartInCorpus(int minTfOfLeftPartInCorpus) {
        this.minTfOfLeftPartInCorpus = minTfOfLeftPartInCorpus;
    }

    public int getMaxTfOfLeftPartInCorpus() {
        return maxTfOfLeftPartInCorpus;
    }

    public void setMaxTfOfLeftPartInCorpus(int maxTfOfLeftPartInCorpus) {
        this.maxTfOfLeftPartInCorpus = maxTfOfLeftPartInCorpus;
    }

    public double getMinRidfOfLeftPartInCorpus() {
        return minRidfOfLeftPartInCorpus;
    }

    public void setMinRidfOfLeftPartInCorpus(double minRidfOfLeftPartInCorpus) {
        this.minRidfOfLeftPartInCorpus = minRidfOfLeftPartInCorpus;
    }

    public String getInLeftPart() {
        return inLeftPart;
    }

    public void setInLeftPart(String inLeftPart) {
        this.inLeftPart = inLeftPart;
    }

    public int getMinLengthOfRightPart() {
        return minLengthOfRightPart;
    }

    public void setMinLengthOfRightPart(int minLengthOfRightPart) {
        this.minLengthOfRightPart = minLengthOfRightPart;
    }

    public int getMaxLengthOfRightPart() {
        return maxLengthOfRightPart;
    }

    public void setMaxLengthOfRightPart(int maxLengthOfRightPart) {
        this.maxLengthOfRightPart = maxLengthOfRightPart;
    }

    public int getMinTfOfRightPartInCorpus() {
        return minTfOfRightPartInCorpus;
    }

    public void setMinTfOfRightPartInCorpus(int minTfOfRightPartInCorpus) {
        this.minTfOfRightPartInCorpus = minTfOfRightPartInCorpus;
    }

    public int getMaxTfOfRightPartInCorpus() {
        return maxTfOfRightPartInCorpus;
    }

    public void setMaxTfOfRightPartInCorpus(int maxTfOfRightPartInCorpus) {
        this.maxTfOfRightPartInCorpus = maxTfOfRightPartInCorpus;
    }

    public double getMinRidfOfRightPartInCorpus() {
        return minRidfOfRightPartInCorpus;
    }

    public void setMinRidfOfRightPartInCorpus(double minRidfOfRightPartInCorpus) {
        this.minRidfOfRightPartInCorpus = minRidfOfRightPartInCorpus;
    }

    public String getInRightPart() {
        return inRightPart;
    }

    public void setInRightPart(String inRightPart) {
        this.inRightPart = inRightPart;
    }

    public int getMinNumberOfFillers() {
        return minNumberOfFillers;
    }

    public void setMinNumberOfFillers(int minNumberOfFillers) {
        this.minNumberOfFillers = minNumberOfFillers;
    }

    public int getMinSumTfOfFillers() {
        return minSumTfOfFillers;
    }

    public void setMinSumTfOfFillers(int minSumTfOfFillers) {
        this.minSumTfOfFillers = minSumTfOfFillers;
    }

    public double getMinAverageRidfOfFillers() {
        return minAverageRidfOfFillers;
    }

    public void setMinAverageRidfOfFillers(double minAverageRidfOfFillers) {
        this.minAverageRidfOfFillers = minAverageRidfOfFillers;
    }

    public double getMinMaxfill() {
        return minMaxfill;
    }

    public void setMinMaxfill(double minMaxfill) {
        this.minMaxfill = minMaxfill;
    }

    public int getMinRatio() {
        return minRatio;
    }

    public void setMinRatio(int minRatio) {
        this.minRatio = minRatio;
    }

    public String getInOneOfFillers() {
        return inOneOfFillers;
    }

    public void setInOneOfFillers(String inOneOfFillers) {
        this.inOneOfFillers = inOneOfFillers;
    }

    public boolean isWriteToFile() {
        return writeToFile;
    }

    public void setWriteToFile(boolean writeToFile) {
        this.writeToFile = writeToFile;
    }

    public boolean isPrintToConsole() {
        return printToConsole;
    }

    public void setPrintToConsole(boolean printToConsole) {
        this.printToConsole = printToConsole;
    }
}
